package com.icoolkj.ms.common.core.enums;

/**
 * @author icoolkj
 * @version 1.0
 * @description 响应状态
 * @createDate 2025/02/04 19:28
 */
public enum ResponseEnum {

    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 系统错误
     */
    SYSTEM_ERROR(500, "系统错误"),

    /**
     * 业务错误
     */
    BUSINESS_ERROR(501, "业务错误"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400, "参数错误"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 请求方法不支持
     */
    METHOD_NOT_ALLOWED(405, "请求方法不支持"),

    /**
     * 服务器内部错误
     */
    INTERNAL_SERVER_ERROR(500, "服务器内部错误"),

    /**
     * 数据不存在
     */
    DATA_NOT_EXIST(1001, "数据不存在"),

    /**
     * 数据已存在
     */
    DATA_EXIST(1002, "数据已存在"),

    /**
     * 用户名或密码错误
     */
    USERNAME_OR_PASSWORD_ERROR(1003, "用户名或密码错误"),

    /**
     * 账号已被禁用
     */
    ACCOUNT_DISABLED(1004, "账号已被禁用"),

    /**
     * 账号已过期
     */
    ACCOUNT_EXPIRED(1005, "账号已过期"),

    /**
     * 账号已锁定
     */
    ACCOUNT_LOCKED(1006, "账号已锁定"),

    /**
     * 凭证已过期
     */
    CREDENTIALS_EXPIRED(1007, "凭证已过期"),

    /**
     * 验证码错误
     */
    CAPTCHA_ERROR(1008, "验证码错误"),

    /**
     * 验证码已过期
     */
    CAPTCHA_EXPIRED(1009, "验证码已过期"),

    /**
     * 上传文件大小超过限制
     */
    UPLOAD_FILE_SIZE_LIMIT(1010, "上传文件大小超过限制"),

    /**
     * 上传文件格式不支持
     */
    UPLOAD_FILE_TYPE_NOT_SUPPORT(1011, "上传文件格式不支持"),

    /**
     * 上传文件失败
     */
    UPLOAD_FILE_FAIL(1012, "上传文件失败"),

    /*** 方法参数没有校验，内容由输入内容决定 ***/
    METHOD_ARGUMENT_NOT_VALID(1000, ""),
    /*** 无法读取获取请求参数 ***/
    HTTP_MESSAGE_NOT_READABLE(1001, "请求参数格式有误"),

    TOKEN_EXPIRE(2000, "token 已过期"),

    USER_NOT_FOUND(3000, "用户未找到"),
    USER_EXIST(3001, "用户已存在"),
    USER_PASSWORD_INVALID(3002, "密码无效"),

    IO_ERROR(7000, "IO 异常");

    private Integer code;

    private String message;

    public Integer getCode() {return code;}

    public String getMessage() {return message;}

    ResponseEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

}
